package com.hks.quart.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.hks.common.core.entity.BaseDeletedEntity;
import com.hks.quart.utils.LongJsonDeserializer;
import com.hks.quart.utils.LongJsonSerializer;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @author zhanglq
 * @version 1.0
 * @date 2021/9/1 11:39
 * @info 定时任务配置管理bean
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("schedule_job")
public class ScheduleJobBean  extends BaseDeletedEntity  implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 任务调度参数key
     */
    public static final String JOB_PARAM_KEY = "JOB_PARAM_KEY";

    /**
     * 参数主键
     */
    @TableId(value = "job_id", type = IdType.ASSIGN_ID)
    @JsonSerialize(using = LongJsonSerializer.class)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    private Long jobId;

    /**
     * 定时任务名称
     */
    @TableField(value = "quartz_name")
    private String quartzName;


    /**
     * 定时任务执行实例名称
     */
    @TableField(value = "bean_name")
    private String beanName;

    /**
     * 定时器执行的任务参数，传入json格式的字符串，方法接收时使用JsonObject转换，获取多个参数
     */
    @TableField(value = "params")
    private String params;


    /**
     * 定时器执行的时候采用调度的形式，所保存的地址是调用你的逻辑代码的地址，定时器与业务模块完全分离，你的业务方法写在你对应的模块下
     * 例如你的执行方法在（http://10.98.2.2:9007/ncFlow/selectForOracleToMysql）
     */
    @TableField(value = "application_url")
    private String applicationUrl;

    /**
     * 执行时间频率定义，如0 0/1 * * *？
     */
    @TableField(value = "cron_expression")
    private String cronExpression;
    /**
     * 定时器状态状态 0表示运行中，1表示停止
     */
    @TableField(value = "status")
    private Integer status;
    /**
     * 备注
     */
    @TableField(value = "remark")
    private String remark;



}
